공공데이터
전기차 충전소
전기차 충전소
charger_lnglat <- read_rds(glue::glue("{here::here()}/data/charger_lnglat.rds"))
charger_sf <- charger_lnglat |>
mutate(across(lng:lat, as.numeric)) |>
filter(lat < 50) |> ## 충전소 위경도 오류 ㅠㅠ
st_as_sf(coords = c("lng", "lat"),
crs = st_crs(sido_map))
charger_sf |>
ggplot() +
geom_sf(aes(geometry = geometry)) +
theme_void()library(leaflet)
leaflet(data = charger_lnglat |>
mutate(across(lng:lat, as.numeric)) |>
filter(lat < 50)
) %>%
addProviderTiles(providers$OpenStreetMap) %>%
## 충전소 상세정보
addMarkers(lng=~lng, lat=~lat,
clusterOptions = markerClusterOptions(),
popup = ~ as.character(paste0("<strong>", 설치장소, "</strong><br>",
"----------------------------------<br>",
"· 주소: ", `주소`, "<br>",
"· 급속: ", `급속충전기_대`, "<br>",
"· 완속: ", `완속충전기_대`, "<br>",
"· 지원차종: ", 지원차종, "<br>"))
) |>
## 시도 경계 추가
addPolygons(data = sido_map,
opacity = 1.0, fillOpacity = 0.1,
weight = 1,
highlightOptions = highlightOptions(color = "black", weight = 3, bringToFront = TRUE),
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) 어린이 교통사고
광명시
보도자료
- 2019-11-19 ‘민식이법’ 빨리 통과되기를” 엄마 눈물의 호소에…
초등학교 주변 CCTV 현황
library(tidyverse)
library(leaflet)
library(fontawesome)
cctv_tbl <- read_rds(glue::glue("{here::here()}/data/km_cctv_tbl.rds"))
km_sf <- read_rds(glue::glue("{here::here()}/data/km_km_sf.rds"))
km_school <- read_rds(glue::glue("{here::here()}/data/km_km_school.rds"))
cctv_icons <- awesomeIconList(
"다목적" = makeAwesomeIcon(
icon = "camera",
markerColor = "blue",
library = "fa",
text = fa("camera")
),
"생활방범" = makeAwesomeIcon(
icon = "camera",
markerColor = "green",
library = "fa",
text = fa("camera")
),
"쓰레기단속" = makeAwesomeIcon(
icon = "camera",
markerColor = "purple",
library = "fa",
text = fa("camera")
),
"어린이보호" = makeAwesomeIcon(
icon = "camera",
markerColor = "red",
library = "fa",
text = fa("camera")
)
)
cctv_tbl_split <- split(cctv_tbl, cctv_tbl$용도)
l <- leaflet() %>% addProviderTiles(providers$OpenStreetMap)
unique(cctv_tbl$용도) %>%
purrr::walk( function(df) {
l <<- l %>%
## 행정동
addPolygons(data = km_sf,
opacity = 1.0, fillOpacity = 0.0,
weight = 1,
highlightOptions = highlightOptions(color = "black", weight = 3, bringToFront = TRUE),
label = ~읍면동,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addMarkers(data = km_school, lng=~경도, lat=~위도, clusterOptions = markerClusterOptions(),
popup = ~ as.character(paste0("<strong>", `학교명`, "</strong><br>",
"--------------------------------<br>",
"· 주소: ", `주소`, "<br>",
"· 설립형태: ", `설립형태`, "<br>",
"· 설립일자: ", `설립일자`))) %>%
addAwesomeMarkers(data = cctv_tbl_split[[df]],
lng=~경도, lat=~위도, clusterOptions = markerClusterOptions(),
group = df,
icon = ~ cctv_icons[용도],
popup = ~ as.character(paste0("<strong>", 기기번호, "</strong><br>",
"--------------------------------<br>",
"· 설치위치: ", `도로명주소`, "<br>",
"· 설립대수: ", 설치대수, "<br>",
"· 용도: ", 용도)))
})
l %>%
addLayersControl(
overlayGroups = unique(cctv_tbl$용도),
options = layersControlOptions(collapsed = FALSE)
)제작방법: 경기도 광명시 - 학교와 CCTV
어린이 교통사고 통계
library(janitor)
library(gt)
library(gtExtras)
library(readxl)
accident_2016 <- read_excel(glue::glue("{here::here()}/data/km_accident_2014_2016.xlsx"))
accident_2019 <- read_excel(glue::glue("{here::here()}/data/km_accident_2017_2019.xlsx"))
accident_2022 <- read_excel(glue::glue("{here::here()}/data/km_accident_2020_2022.xlsx"))
accident_tbl <- bind_rows(accident_2016, accident_2019) %>%
bind_rows(accident_2022)
accident_tbl %>%
group_by(사고유형) %>%
summarize(사망자수 = sum(사망자수),
중상자수 = sum(중상자수),
경상자수 = sum(경상자수)) %>%
adorn_totals(where = "row", name = "합계") %>%
adorn_totals(where = "col", name = "합계") %>%
## 표
gt::gt() %>%
tab_header(
title = md("광명시 **보행 어린이** 교통사고"),
subtitle = md("`TAAS` 교통사고분석시스템 (2014~2022)")
) %>%
gt::cols_align(align = "center") %>%
tab_spanner(
label = "교통사고 어린이 구분",
columns = c(
사망자수, 중상자수, 경상자수
)
) %>%
gt_theme_538() %>%
gt_highlight_rows(
rows = 사고유형 == "차대사람 - 횡단중",
fill = "lightgrey",
bold_target_only = TRUE,
target_col = everything()
)| 광명시 보행 어린이 교통사고 | ||||
|---|---|---|---|---|
TAAS 교통사고분석시스템 (2014~2022) |
||||
| 사고유형 | 교통사고 어린이 구분 | 합계 | ||
| 사망자수 | 중상자수 | 경상자수 | ||
| 차대사람 - 기타 | 0 | 11 | 34 | 45 |
| 차대사람 - 길가장자리구역통행중 | 0 | 3 | 12 | 15 |
| 차대사람 - 보도통행중 | 0 | 2 | 5 | 7 |
| 차대사람 - 차도통행중 | 0 | 3 | 8 | 11 |
| 차대사람 - 횡단중 | 3 | 33 | 59 | 95 |
| 차대차 - 기타 | 0 | 1 | 2 | 3 |
| 차대차 - 측면충돌 | 0 | 3 | 0 | 3 |
| 합계 | 3 | 56 | 120 | 179 |
accident_raw <- read_excel(glue::glue("{here::here()}/data/어린이_교통사고건수_시도_시_군_구__20230624195028.xlsx"), sheet = "데이터",
skip = 2)
accident <- accident_raw %>%
select(1, 5:7) %>%
set_names(c("시점", "사고건수", "사망자수", "부상자수")) %>%
mutate_all(as.integer) %>%
pivot_longer(cols=-시점, names_to = "구분", values_to = "건수") %>%
mutate(건수 = ifelse(is.na(건수), 0, 건수))
accident %>%
ggplot(aes(x = 시점, y=건수, color = 구분)) +
geom_line() +
geom_point() +
labs(title = "광명시 어린이 교통사고건수",
x = "",
y = "교통사고건수",
caption = "출처: KOSIS https://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1YL202107") +
theme_minimal(base_family = "MaruBuri")광명시 유동인구(KT)
데이터출처: 경기도 데이터 분석센터 KT 유동인구 (2018년 1월 ~ 2022년 12월)









